package com.hzz.mybatisplusdemo.student.controller;


import com.hzz.mybatisplusdemo.student.entity.Student;
import com.hzz.mybatisplusdemo.student.service.impl.StudentServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author hzz
 * @since 2021-08-09
 */
@RestController
@RequestMapping("/student/student")
@Slf4j
public class StudentController {
    @Autowired
    private StudentServiceImpl studentService;

    /**
     * 测试异步事务在接口是否可行
     * 事务注解是根据aop实现的，只要在同一个线程，那么就是可行的，但是不同线程是不行的
     * 并且异步执行方法的异常是不会被调用方法的时候捕获或者抛出的
     */
    @GetMapping("/asyncTrant")
    public void asyncTrant() {
        try {
            studentService.test();
        } catch (Exception e) {
            log.error("异步处理捕获异常", e);
        }
    }


    @GetMapping("/findById/{id}")
    public Student findById(
            @PathVariable Integer id) {
        return studentService.findStundetById(id);
    }
}
